home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 July: Mac OS SDK / Dev.CD Jul 97 SDK1.toast / Development Kits (Disc 1) / QuickDraw GX / Programming Stuff / Sample Code / Typography Samples / Dave’s Fab Samples ƒ / GetOffsetGlyphs Example.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-06-18  |  3.4 KB  |  116 lines  |  [TEXT/KAHL]

  1. /****************************************************************************************************
  2.     6/96 bob    Updated #includes to support changed GX Library names.
  3.     
  4.     ©1990 - 1996  Apple Computer, Inc.
  5.     All rights reserved.
  6. ****************************************************************************************************/
  7. #include <Types.h>
  8. #include <QuickDraw.h>
  9. #include <Fonts.h>
  10. #include <Windows.h>
  11. #include <Menus.h>
  12. #include <SegLoad.h>
  13. #include <Memory.h>
  14. #include <Desk.h>
  15.  
  16. #include <GXGraphics.h>
  17. #include "GraphicsLibraries.h"
  18. #include <GXEnvironment.h>
  19.  
  20. #include <GXTypes.h>
  21. #include <GXLayout.h>
  22. #include "LayoutLibrary.h"
  23. #include "LayoutFeatureConstants.h"
  24.  
  25. #include "SampleInterface.h"
  26.  
  27. short MyStrLen(char *x);
  28. static short MyStrLen(x)
  29. char    *x;
  30.     {
  31.     short c = 0;
  32.     while (*x++) c++;
  33.     return c;
  34.     }    /* MyStrLen */
  35.  
  36. void GetOffsetGlyphsExample(WindowPtr sampleWindow)
  37.     {
  38.     /* Variables */
  39.     char                *myString = "ctspfifl";
  40.     gxLayoutOffsetState    offsetState;
  41.     gxPoint                myPoint;
  42.     gxRectangle            boundingBoxes[20];
  43.     gxRunFeature            gxRunFeature[5];
  44.     gxShape                layout;
  45.     short                len, level = 0;
  46.     gxStyle                myStyle;
  47.     unsigned short        firstGlyph, secondGlyph;
  48.     gxViewPort            aViewPort;
  49.     
  50.     /* Initialization */
  51.     
  52.     myPoint.x = ff(20);
  53.     myPoint.y = ff(80);
  54.     
  55.     aViewPort = GXNewWindowViewPort(sampleWindow);
  56.     SetDefaultViewPort(aViewPort);
  57.     
  58.     len = MyStrLen(myString);
  59.     
  60.     myStyle = NewLayoutStyle((char *) "\pHoefler Text Italic", ff(60), 0, nil, nil, 0, nil);
  61.     gxRunFeature[0].featureType = ligatureType;
  62.     gxRunFeature[0].featureSelector = ligatureRequiredOffSelector;
  63.     gxRunFeature[1].featureType = ligatureType;
  64.     gxRunFeature[1].featureSelector = ligatureCommonOffSelector;
  65.     gxRunFeature[2].featureType = ligatureType;
  66.     gxRunFeature[2].featureSelector = ligatureRareOffSelector;
  67.     gxRunFeature[3].featureType = ligatureType;
  68.     gxRunFeature[3].featureSelector = ligatureLogotypeOffSelector;
  69.     gxRunFeature[4].featureType = ligatureType;
  70.     gxRunFeature[4].featureSelector = ligatureRebusOffSelector;
  71.     GXSetStyleRunFeatures(myStyle, 5, gxRunFeature);
  72.     
  73.     layout = GXNewLayout(
  74.         1, &len, (void *) &myString,
  75.         1, &len, &myStyle,
  76.         1, &len, &level,
  77.         nil, &myPoint);
  78.     GXDrawShape(layout);
  79.     GXGetOffsetGlyphs(layout, 6, false, &offsetState, &firstGlyph, &secondGlyph);
  80.     GXGetGlyphMetrics(layout, nil, boundingBoxes, nil);
  81.     GXDrawRectangle(boundingBoxes + firstGlyph - 1, gxClosedFrameFill);
  82.     GXDisposeShape(layout);
  83.     
  84.     gxRunFeature[1].featureSelector = ligatureCommonOnSelector;
  85.     GXSetStyleRunFeatures(myStyle, 5, gxRunFeature);
  86.     myPoint.y += ff(75);
  87.     
  88.     layout = GXNewLayout(
  89.         1, &len, (void *) &myString,
  90.         1, &len, &myStyle,
  91.         1, &len, &level,
  92.         nil, &myPoint);
  93.     GXGetOffsetGlyphs(layout, 6, false, &offsetState, &firstGlyph, &secondGlyph);
  94.     GXDrawShape(layout);
  95.     GXGetGlyphMetrics(layout, nil, boundingBoxes, nil);
  96.     GXDrawRectangle(boundingBoxes + firstGlyph - 1, gxClosedFrameFill);
  97.     GXDisposeShape(layout);
  98.  
  99.     gxRunFeature[2].featureSelector = ligatureRareOnSelector;
  100.     GXSetStyleRunFeatures(myStyle, 5, gxRunFeature);
  101.     myPoint.y += ff(75);
  102.     
  103.     layout = GXNewLayout(
  104.         1, &len, (void *) &myString,
  105.         1, &len, &myStyle,
  106.         1, &len, &level,
  107.         nil, &myPoint);
  108.     GXGetOffsetGlyphs(layout, 6, false, &offsetState, &firstGlyph, &secondGlyph);
  109.     GXDrawShape(layout);
  110.     GXGetGlyphMetrics(layout, nil, boundingBoxes, nil);
  111.     GXDrawRectangle(boundingBoxes + firstGlyph - 1, gxClosedFrameFill);
  112.     GXDisposeShape(layout);
  113.     GXDisposeStyle(myStyle);
  114.     GXDisposeViewPort(aViewPort);
  115.     }    /* main */
  116.